linux 除了zabbix还有什么监控软件

您所在的位置:网站首页 zabbix 百科 linux 除了zabbix还有什么监控软件

linux 除了zabbix还有什么监控软件

2023-04-05 16:20| 来源: 网络整理| 查看: 265

第一:zabbix

zabbix是一个基于Web界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位或解决存在的各种问题。

第二:Nagios

Nagios是一款开源的的免费网络监视工具,能有效监控Windows、Linux和Unix的状态,交换机路由器等网络设备,打印机等。在系统或服务状态异常时发出邮件或短信报警时间通知运维人员,在状态恢复后发出正常的邮件或短信通知。

第三:SeaLion

SeaLion是一个基于云的Linux服务器监控工具。也是通过统一的仪表盘监控所有服务器指标,它只需几分钟即可完成设置,它具有即时报警功能,以便在发生问题时,可以快速收到通知和每日数据摘要等。

第四:Icinga

Icinga是一个免费的开源监控系统,可以检查服务器资源的可用性,它会记录服务器问题并在停机的时候通知您。

第五:Munin

Munin是一个网络和系统监控工具,可帮助您分析服务器资源趋势。它旨在成为一个即插即用的解决方案,安装后无需太多额外工作即可收集关键信息。Munin主要功能是有效分析服务器资源优势,属于网络及系统监控的工具。

第六:Monit

Monit是一个用于管理和监控Unix系统的开源工具。Monit可以进行自动维护和维修,如果出现错误情况,Monit可以自动触发保护行为。

第七:Performance Co-Pilot

Performance Co-Pilot,简称PCP,是一个系统性能分析框架。它收集并分析来自多个主机的各种性能指标,可以通过它观察指标走向的趋势,以帮助您快速识别异常所在点。它提供API,可依据此来开发自定义的监控和报告解决方案。

用 ls -l 不会有误

d rwx rwx rwx

有 d , 是文件夹

左第一组 rwx 是文件拥有者的 读,写,执行 权

第二组 rwx 是用户组的 读,写,执行 权

第三组 rwx 是其它人的 读,写,执行 权

root 的权是可以 用 chmod 改变文件 的读,写,执行 权。

如果文件拥有者不让别的用户读写执行,root 同样 也不能读写执行。

root 此时要行使 chmod 权,改变 读写执行权 以后root 才能 读写执行。

 1. 摄像头的安装

在Linux下常用的摄像头驱动是spca5xx。这个网站还给出了这款驱动支持的摄像头的种类。另外,ov511芯片直接就支持Linux,使用者款芯片的摄像头有网眼V2000。我使用的是网眼V2000的摄像头,和Z-Star

301p+现代7131R芯片的摄像头。后一种需要spca5xx的驱动。关于spca5xx的安装方法,网上有很多介绍,这里就不说了。

2. 摄像头的调试

安装好摄像头后,为了测试摄像头能否正常工作,可以用一下软件。比较著名的是xawtv,在网上搜以下可以下载到。安装好后,打开xawtv则可以调试摄像头。

3. Video4Linux 编程获取数据

现有的video4linux有两个版本,v4l和v4l2。本文主要是关于v4l的编程。利用v4l API获取视频图像一般有以下几步:

a打开设备

b设置设备的属性,比如图像的亮度,对比度等等

c设定传输格式和传输方式

d开始传输数据,一般是一个循环,用以连续的传输数据

e关闭设备

下面具体介绍v4l编程的过程。首先指出,在video4linux编程时要包含头文件,其中包含了video4linux的数据结构和函数定义。

1)v4l的数据结构

在video4linux API中定义了如下数据结构,详细的数据结构定义可以参考v4l API的文档,这里就编程中经常使用的数据结构作出说明。

首先我们定义一个描述设备的数据结构,它包含了v4l中定义的所有数据结构:

typedef struct

_v4ldevice

{int fd//设备号

struct video_capability capability

struct

video_channel channel[10]

struct video_picture picture

struct video_clip

clip

struct video_window window

struct video_capture capture

struct

video_buffer buffer

struct video_mmap mmap

struct video_mbuf

mbuf

struct video_unit unit

unsigned char

*map//mmap方式获取数据时,数据的首地址

pthread_mutex_t mutex

int frame

int

framestat[2]

int overlay

}v4ldevice

下面解释上面这个数据结构中包含的数据结构,这些结构的定义都在中。

* struct

video_capability

name[32] Canonical name for this interface

type Type of

interface

channels Number of radio/tv channels if appropriate

audios

Number of audio devices if appropriate

maxwidth Maximum capture width in

pixels

maxheight Maximum capture height in pixels

minwidth Minimum capture

width in pixels

minheight Minimum capture height in pixels

这一个数据结构是包含了摄像头的属性,name是摄像头的名字,maxwidth maxheight是摄像头所能获取的最大图像大小,用像素作单位。

在程序中,通过ioctl函数的VIDIOCGCAP控制命令读写设备通道已获取这个结构,有关ioctl的使用,比较复杂,这里就不说了。下面列出获取这一数据结构的代码:

int v4lgetcapability(v4ldevice *vd)

{

if(ioctl(vd-fd,

VIDIOCGCAP, (vd-capability)) 0)

{

v4lperror("v4lopen:VIDIOCGCAP")

return -1

}

return 0

}

*

struct video_picture

brightness Picture brightness

hue Picture hue (colour

only)

colour Picture colour (colour only)

contrast Picture

contrast

whiteness The whiteness (greyscale only)

depth The capture depth

(may need to match the frame buffer depth)

palette Reports the palette that

should be used for this image

这个数据结构主要定义了图像的属性,诸如亮度,对比度,等等。这一结构的获取通过ioctl发出VIDIOCGPICT控制命令获取。

* struct video_mbuf

size The number of bytes to

map

frames The number of frames

offsets The offset of each frame

这个数据结构在用mmap方式获取数据时很重要:

size表示图像的大小,如果是640*480的彩色图像,size=640*480*3

frames表示帧数

offsets表示每一帧在内存中的偏移地址,通过这个值可以得到数据在图像中的地址。

得到这个结构的数据可以用ioctl的VIDIOCGMBUF命令。源码如下:

int v4lgetmbuf(v4ldevice

*vd)

{

if(ioctl(vd-fd, VIDIOCGMBUF, (vd-mbuf))0)

{

v4lperror("v4lgetmbuf:VIDIOCGMBUF")

return -1

}

return

0

}

而数据的地址可以有以下方式计算:

unsigned char

*v4lgetaddress(v4ldevice *vd)

{

return (vd-map +

vd-mbuf.offsets[vd-frame])

}

2)获取影像mmap方式。

在video4Linux下获取影像有两种方式:overlay和mmap。由于我的摄像头不支持overlay方式,所以这里只谈mmap方式。

mmap方式是通过内存映射的方式获取数据,系统调用ioctl的VIDIOCMCAPTURE后,将图像映射到内存中,然后可以通过前面的v4lgetmbuf(vd)函数和v4lgetaddress(vd)函数获得数据的首地址,这是李可以选择是将它显示出来还是放到别的什么地方。

下面给出获取连续影像的最简单的方法(为了简化,将一些可去掉的属性操作都去掉了):

char*

devicename="/dev/video0"

char* buffer

v4ldevice device

int width =

640

int height = 480

int frame =

0

v4lopen("/dev/video0",device)//打开设备

v4lgrabinit(device,width,height)//初始化设备,定义获取的影像的大小

v4lmmap(device)//内存映射

v4lgrabstart(device,frame)//开始获取影像

while(1){

v4lsync(device,frame)//等待传完一帧

frame

= (frame+1)%2//下一帧的frame

v4lcapture(device,frame)//获取下一帧

buffer =

(char*)v4lgetaddress(device)//得到这一帧的地址

//buffer给出了图像的首地址,你可以选择将图像显示或保存......

//图像的大小为

width*height*3

..........................

}

转载仅供参考,版权属于原作者。祝你愉快,满意请采纳哦

欢迎分享,转载请注明来源:内存溢出

原文地址:https://outofmemory.cn/yw/7321255.html



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3